diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php
index 1dbd178..38615dd 100644
--- a/tests/Bootstrap.php
+++ b/tests/Bootstrap.php
@@ -15,7 +15,7 @@
 // Get vfsStream either via PEAR or composer
 foreach (explode(PATH_SEPARATOR, get_include_path()) as $path)
 {
-	if (file_exists($path.DIRECTORY_SEPARATOR.'vfsStream/vfsStream.phps'))
+	if (file_exists($path.DIRECTORY_SEPARATOR.'vfsStream/vfsStream.php'))
 	{
 		require_once 'vfsStream/vfsStream.php';
 		break;
diff --git a/tests/codeigniter/database/query_builder/escape_test.php b/tests/codeigniter/database/query_builder/escape_test.php
new file mode 100644
index 0000000..6d220d6
--- /dev/null
+++ b/tests/codeigniter/database/query_builder/escape_test.php
@@ -0,0 +1,47 @@
+<?php
+
+class Escape_test extends CI_TestCase {
+
+	/**
+	 * @var object Database/Query Builder holder
+	 */
+	protected $db;
+
+	public function set_up()
+	{
+		$this->db = Mock_Database_Schema_Skeleton::init(DB_DRIVER);
+
+		Mock_Database_Schema_Skeleton::create_tables();
+		Mock_Database_Schema_Skeleton::create_data();
+	}
+
+	// ------------------------------------------------------------------------
+
+	/**
+	 * @see ./mocks/schema/skeleton.php
+	 */
+	public function test_escape_like_percent_sign()
+	{
+		$string = $this->db->escape_like_str('\%foo');
+    	$sql = "SELECT `value` FROM `misc` WHERE `key` LIKE '$string%';";
+    	$res = $this->db->query($sql)->result_array();
+		
+		// Check the result
+		$this->assertEquals(1, count($res));
+	}
+
+	// ------------------------------------------------------------------------
+
+	/**
+	 * @see ./mocks/schema/skeleton.php
+	 */
+	public function test_escape_like_backslash_sign()
+	{
+		$string = $this->db->escape_like_str('\\');
+    	$sql = "SELECT `value` FROM `misc` WHERE `key` LIKE '$string%';";
+    	$res = $this->db->query($sql)->result_array();
+		
+		// Check the result
+		$this->assertEquals(2, count($res));
+	}
+}
\ No newline at end of file
diff --git a/tests/mocks/database/schema/skeleton.php b/tests/mocks/database/schema/skeleton.php
index 671336c..05499f8 100644
--- a/tests/mocks/database/schema/skeleton.php
+++ b/tests/mocks/database/schema/skeleton.php
@@ -88,6 +88,23 @@
 		));
 		static::$forge->add_key('id', TRUE);
 		static::$forge->create_table('job', (strpos(static::$driver, 'pgsql') === FALSE));
+
+		// Misc Table
+		static::$forge->add_field(array(
+			'id' => array(
+				'type' => 'INTEGER',
+				'constraint' => 3,
+			),
+			'key' => array(
+				'type' => 'VARCHAR',
+				'constraint' => 40,
+			),
+			'value' => array(
+				'type' => 'TEXT',
+			),
+		));
+		static::$forge->add_key('id', TRUE);
+		static::$forge->create_table('misc', (strpos(static::$driver, 'pgsql') === FALSE));
 	}
 
 	/**
@@ -111,6 +128,10 @@
     			array('id' => 3, 'name' => 'Accountant', 'description' => 'Boring job, but you will get free snack at lunch'),
 			    array('id' => 4, 'name' => 'Musician', 'description' => 'Only Coldplay can actually called Musician'),
 			),
+			'misc' => array(
+				array('id' => 1, 'key' => '\\xxxfoo456', 'value' => 'Entry with \\xxx'), 
+				array('id' => 2, 'key' => '\\%foo456', 'value' => 'Entry with \\%'),
+			),
 		);
 
 		foreach ($data as $table => $dummy_data) 
